package systemfnomabss


/*
 * Usage: substituteterm(value).astop.into(body)
 *
 */
trait TermSubstitutionProvider extends TypeSubstitutionProvider{ self: TermSubstitutionProvider with AbstractSyntax =>

  type partial <: termexamplepartial
  type topsubst <: termexamplenamesubst
  
  def substituteterm(v:LTerm):partial
  abstract class termexamplepartial(v:Node) extends typeexamplepartial(v){
    //def asTop: topsubst
    override def toString="[? := "+v+"]"
  }
  abstract class termexamplenamesubst(n:Name, v:Node) extends typeexamplenamesubst(n,v){
    def intoterm(term:LTerm):LTerm
    //override def toString="[top := "+v+"]"
  }
}
